package ar.edu.utn.frba.tacs.warnes.beans;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import ar.edu.utn.frba.tacs.warnes.cotizacion.Dolar;
import ar.edu.utn.frba.tacs.warnes.cotizacion.Euro;
import ar.edu.utn.frba.tacs.warnes.cotizacion.Moneda;
import ar.edu.utn.frba.tacs.warnes.cotizacion.Peso;
import ar.edu.utn.frba.tacs.warnes.cotizacion.Real;
import ar.edu.utn.frba.tacs.warnes.entities.Pedido;
import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

/**
 * @author dmiglino
 */
public class OpcionesBean extends BaseBean {
	private Moneda monedaActual;
	private int idMonedaActual;
	private Float cotizacionPeso;
	private Float cotizacionDolar;
	private Float cotizacionEuro;
	private Float cotizacionReal;

	private OpcionesBean() {
		this.setPedidos(ContenedorWarnes.getInstance().getPedidos());
		this.setMonedaActual(ContenedorWarnes.getInstance().getMoneda());
	}

	public Moneda getMonedaActual() {
		return this.monedaActual;
	}

	public void setMonedaActual(Moneda monedaActual) {
		this.monedaActual = monedaActual;
		ContenedorWarnes.getInstance().setMoneda(monedaActual);
	}

	public List<Pedido> pedidos = new ArrayList<Pedido>();

	public List<Pedido> getPedidos() {
		return this.pedidos;
	}

	public void setPedidos(List<Pedido> pedidos) {
		this.pedidos = pedidos;
	}

	/**
	 * @return lista de las monedas disponibles
	 */
	public List<SelectItem> getMonedas() {
		List<SelectItem> monedas = new ArrayList<SelectItem>();
		monedas.add(new SelectItem(Peso.getInstance().getId(), "Peso"));
		monedas.add(new SelectItem(Dolar.getInstance().getId(), "Dolar"));
		monedas.add(new SelectItem(Euro.getInstance().getId(), "Euro"));
		monedas.add(new SelectItem(Real.getInstance().getId(), "Real"));

		return monedas;
	}

	public Float getCotizacionPeso() {
		return Peso.getInstance().getCotizacion();
	}

	public void setCotizacionPeso(Float cotizacionPeso) {
		this.cotizacionPeso = cotizacionPeso;
	}

	public Float getCotizacionDolar() {
		return Dolar.getInstance().getCotizacion();
	}

	public void setCotizacionDolar(Float cotizacionDolar) {
		this.cotizacionDolar = cotizacionDolar;
	}

	public Float getCotizacionEuro() {
		return Euro.getInstance().getCotizacion();
	}

	public void setCotizacionEuro(Float cotizacionEuro) {
		this.cotizacionEuro = cotizacionEuro;
	}

	public Float getCotizacionReal() {
		return Real.getInstance().getCotizacion();
	}

	public void setCotizacionReal(Float cotizacionReal) {
		this.cotizacionReal = cotizacionReal;
	}

	public int getIdMonedaActual() {
		return this.idMonedaActual;
	}

	public void setIdMonedaActual(int idMonedaActual) {
		this.idMonedaActual = idMonedaActual;
		switch (idMonedaActual) {
		case ConstantesWarnes.PESO:
			this.setMonedaActual(Peso.getInstance());
			break;
		case ConstantesWarnes.DOLAR:
			this.setMonedaActual(Dolar.getInstance());
			break;
		case ConstantesWarnes.EURO:
			this.setMonedaActual(Euro.getInstance());
			break;
		case ConstantesWarnes.REAL:
			this.setMonedaActual(Real.getInstance());
			break;
		default:
			break;
		}
	}

	@Override
	public String actionVolver() {
		// TODO validar que sean numericos
		ContenedorWarnes.getInstance().cambiarCotizacion(Peso.getInstance(),
				this.cotizacionPeso);
		ContenedorWarnes.getInstance().cambiarCotizacion(Dolar.getInstance(),
				this.cotizacionDolar);
		ContenedorWarnes.getInstance().cambiarCotizacion(Euro.getInstance(),
				this.cotizacionEuro);
		ContenedorWarnes.getInstance().cambiarCotizacion(Real.getInstance(),
				this.cotizacionReal);
		ContenedorWarnes.getInstance().setMoneda(this.getMonedaActual());

		return super.actionVolver();
	}

}
